{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hilbert 变换与瞬时频率\n",
    "Hilbert 变换仅可估计单分量信号的瞬时频率。单分量信号在时频平面中用单一“脊”来描述。单分量信号包括单一正弦波信号和 chirp 等信号。\n",
    "\n",
    "生成以 1 kHz 采样的时长为两秒的 chirp 信号。指定 chirp 信号的最初频率为 100 Hz，一秒后增加到 200 Hz。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from scipy import signal\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "fs = 1000\n",
    "t = np.linspace(0,2-1/fs,fs*2)\n",
    "y = signal.chirp(t, f0=100,f1=200, t1=1, method='linear')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用通过 stft函数实现的短时傅里叶变换来估计 chirp 信号的频谱图。下图中每个时间点有一个峰值频率，很好地描述了这一信号。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x2d4cc667520>"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "f,t1,zxx = signal.stft(y,fs,nperseg = 50)\n",
    "plt.pcolormesh(t1, f, abs(zxx))\n",
    "plt.colorbar()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算解析信号并对相位进行微分以得到瞬时频率。对导数进行缩放以得到有意义的估计。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 2.0)"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAkyklEQVR4nO3deXxV9Z3/8dc3hCQQIBAS1gQSMBBAViNUXEEQkVHqMEX8uaDi4HSo1h+1FW0f4/zG35QoFMGlKogtMnUbnbaMJWyCCAooIIiYhYQkEPawhJB9+c4f9+hcEcwNucm5yX0/H488cu73LPeTk5O8c+755B5jrUVERIJXiNsFiIiIuxQEIiJBTkEgIhLkFAQiIkFOQSAiEuRC3S4AICYmxiYkJLhdhohIs7Jjx45Ca21sQ7cTEEGQkJDA9u3b3S5DRKRZMcbk+2M7emlIRCTIKQhERIKcgkBEJMgpCEREgpyCQEQkyCkIRESCnIJARCTIKQhERJqh/9592G/bUhCIiDQzeYUlPPzWF37bnoJARKSZKauq8ev2FAQiIs2Mv28sqSAQEQlyCgIRkWbG4t9TAgWBiEiQUxCIiDQzukYgIiJ+pSAQEQlyCgIRkWZGLw2JiAS5Ju8aMsZEGGM+M8bsNsbsNcb8P2c80RizzRiTbYx5xxgT5oyHO4+znfkJfq1YRCTI/fQ/dvp1e76cEVQAY621Q4FhwM3GmB8BzwDPWWsvA04DM5zlZwCnnfHnnOVERMRPDp0p8+v26gwC63HOedja+bDAWOA9Z3wZ8GNnerLzGGf+jcYY46+CRUSC2TufH/D7Nn26RmCMaWWM2QUcB9YCOcAZa221s0gB0NOZ7gkcBHDmFwGdL7DNmcaY7caY7SdOnGjQFyEiEgzyCkt4/P09ft+uT0Fgra2x1g4D4oCRQHJDn9hau9ham2KtTYmNjW3o5kREWqyaWktqWgY3zP+oUbYfWp+FrbVnjDEbgKuAjsaYUOev/jjgkLPYISAeKDDGhAJRwEk/1iwiEjQ+zSnk/yzZ1qjP4UvXUKwxpqMz3QYYD6QDG4B/cBabDvzVmV7hPMaZv95af3e9ioi0bKdKKpn5xvbvhMBfZ11N7txb/P5cvpwRdAeWGWNa4QmOd621HxhjvgbeNsb8f+ALYKmz/FJguTEmGzgFTPN71SIiLdTZ8ipe/iiHZZ/mUVpZw5UJnfi3yZczoHuHb5d57o6h/N93dvvtOesMAmvtl8DwC4zvx3O94PzxcuAnfqlORCRIVNXU8u72gzy3dh+F5yq4NimGX08aQHK3Dt9b9vbhcfzLX/f67bnrdY1ARET8y1rL6r1HeXZVJvsLS0jp3Yml01MYGt/xB9drFeK/rnwFgYiIS7bnneK3K9PZeeAMSV3asXR6CmOTu+DLv16F+PHfsxQEIiJNLPv4OZ5dlcGar4/RtUM4z0wZzJQRcYS28v3t3x4dl8T0f/FPPQoCEZEmcry4nIXr9vHO5wdp07oVv5zQnweuTqRNWKt6b+veqxK+bc9sKAWBiEgjKy6vYvHH+3ltUy5VNbXc86PePDz2Mjq3C3e7NEBBICLSaCqra3lzWz7Pr8/mVEkltw7twS/G9yMhJtLt0r5DQSAi4mfWWv625wjzVmeSf7KUq/p05olbkhkS19Ht0i5IQSAi4kdb959kbloGuw+eIblbe/5w/5Xc0C/Wp04gtygIRET8IPNoMc+symB9xnG6R0Uw7x+G8Pcj4vza799YFAQiIg1wpKiM59Zm8d6OAiLDQ5kzMZn7RicQ0br+nUBuURCIiFyCorIqXtmYw+ubc7EWHrg6kVljLqNTZJjbpdWbgkBEpB4qqmtYviWfFzdkU1RWxY+H9WT2+H7ER7d1u7RLpiAQEfFBba1lxe7DzF+TScHpMq5NimHOxGQG9Yhyu7QGUxCIiNRh875C5qals/fwWQZ278DyGYO5Nqnl3FlRQSAichF7DxeRmpbBpn2FxHVqw8I7hnHb0B6ENINOoPpQEIiInKfgdCkL1mTx512HiGrTmt9MGsA9V/UmPLT5dALVh4JARMRxprSSlzZks+zTfDAw87o+/PMNlxHVprXbpTUqBYGIBL3yqhqWfZrHSxuyKa6oZsqIOGaP70ePjm3cLq1JKAhEJGjV1Fr+8sUhfrcmk8NF5YzpH8vjE5MveHvIlkxBICJBx1rLxqwTpKZlkHG0mCFxUcyfOpTRfWPcLs0VCgIRCSp7CoqYm5bOpzkn6RXdlhfuHM6kwd1bXCdQfSgIRCQoHDxVyrzVmazYfZjoyDCeunUgd43qTVio77eHbKkUBCLSop0qqeTF9dks35pHqxDDrDF9eej6vnSIaNmdQPWhIBCRFqmssobXP8nllY9yKKmsZmpKPI+O60e3qAi3Sws4CgIRaVFqai3v7yhgwdosjp4tZ9yALjx+czJJXdu7XVrAUhCISItgrWV9xnGeWZVB1rFzDIvvyKJpwxjVp7PbpQU8BYGINHtfHDjN3LQMPss9RULntvz+rhFMvLxbQN8eMpAoCESk2corLGHe6kz+tucInSPDeHryIKaN7EXrVuoEqg8FgYg0O4XnKnj+w328ue0AYaEhPHJjEjOv60O7cP1KuxTaayLSbJRWVvPaplxe3ZhDeXUt066M5+fjkujSXp1ADaEgEJGAV11TyzvbD7Jw3T5OFFcwYVBXfnVzMn1j27ldWougIBCRgGWtZc3Xx3h2VQY5J0pI6d2JV+4ewRW9o90urUVREIhIQNqRf4q5KzPYnn+aPrGRLL7nCsYP7KpOoEagIBCRgJJz4hzPrspg9d5jxLYP57e3D2ZqShyh6gRqNAoCEQkIx4vLWbRuH29/fpCI0BBmj+/Hg9cm0jZMv6Yam/awiLjqXEU1Sz7ez5JN+6msruXuUb14+MYkYtqFu11a0FAQiIgrqmpqefuzAyz6cB+F5yqZNLg7j03oT2JMpNulBZ06g8AYEw+8AXQFLLDYWrvIGPOvwD8CJ5xFn7TWrnTWeQKYAdQAj1hrVzdC7SLSDFlrWfXVUZ5dnUluYQkjE6NZcm8yw3t1cru0oOXLGUE18Atr7U5jTHtghzFmrTPvOWvtfO+FjTEDgWnAIKAHsM4Y089aW+PPwkWk+fks9xRz09L54sAZkrq0Y+n0FMYmd1EnkMvqDAJr7RHgiDNdbIxJB3r+wCqTgbettRVArjEmGxgJbPFDvSLSDGUfLyY1LZN16cfo2iGcZ6YMZsoIdQIFinpdIzDGJADDgW3A1cDPjDH3AtvxnDWcxhMSW71WK+ACwWGMmQnMBOjVq9el1C4iAe7Y2XIWrsvinc8PEhkWyi8n9OeBqxNpE9bK7dLEi89BYIxpB7wPPGqtPWuMeRl4Gs91g6eB3wEP+Lo9a+1iYDFASkqKrU/RIhLYisureHXjfl7bvJ+aWsv00Qk8PDaJ6Mgwt0uTC/ApCIwxrfGEwJ+stf8FYK095jV/CfCB8/AQEO+1epwzJiItXGV1LW9uy+f59dmcKqnktqE9eOym/vTq3Nbt0uQH+NI1ZIClQLq1doHXeHfn+gHA7cBXzvQK4E1jzAI8F4uTgM/8WrWIBBRrLR98eYT5azLJP1nK6L6dmTMxmSFxHd0uTXzgyxnB1cA9wB5jzC5n7EngTmPMMDwvDeUBDwFYa/caY94FvsbTcTRLHUMiLdeWnJOkpqWzu6CI5G7t+eP9V3J9v1h1AjUjvnQNbQYu9B1d+QPr/Dvw7w2oS0QCXMbRszyTlsGGzBP0iIpg/k+GcvvwnrQKUQA0N/rPYhGplyNFZSxYk8V7OwtoHx7KExOTmT46gYjW6gRqrhQEIuKTorIqXv4ohz98kou18OA1icwacxkd26oTqLlTEIjID6qormH5lnxe3JBNUVkVtw/ryeyb+hHXSZ1ALYWCQEQuqLbWsmL3YeavyaTgdBnXJsUwZ2Iyg3pEuV2a+JmCQES+Z/O+QuampbP38FkG9ejA3L8fzLVJsW6XJY1EQSAi39p7uIjUtAw27SukZ8c2LLxjGLcN7UGIOoFaNAWBiFBwupQFa7L4865DRLVpzW8mDeCeq3oTHqpOoGCgIBAJYmdKK3lpQzbLtuRjgIeu68tPb+hLVJvWbpcmTUhBIBKEyqtqWPZpHi9tyKa4opopI+KYPb4fPTq2cbs0cYGCQCSI1NRa/vLFIX63JpPDReWM6R/L4xOTSe7Wwe3SxEUKApEgYK1lY9YJUtMyyDhazJC4KOZPHcrovjFulyYBQEEg0sLtKSgidVU6n2SfpFd0W164cziTBndXJ5B8S0Eg0kIdPFXKvNWZrNh9mOjIMJ66dSB3jepNWKhuDynfpSAQaWFOlVTy4vpslm/No1WI4WdjLuOh6/vQPkKdQHJhCgKRFqKssobXP8nllY9yKKmsZmpKPI+O60e3qAi3S5MApyAQaeZqai3v7yhgwdosjp4tZ9yALjx+czJJXdu7XZo0EwoCkWbKWsuGzOOkpmWQdewcw+I78vydwxmZGO12adLMKAhEmqFdB88wd2U623JPkRgTye/vGsHEy7vp9pBySRQEIs1IXmEJ81Zn8rc9R4hpF8bTkwcxbWQvWrdSJ5BcOgWBSDNQeK6CFz7cx5+2HSAsNIRHbkxi5nV9aBeuH2FpOB1FIgGstLKapZtyeWVjDuXVtUy7Mp6fj0uiS3t1Aon/KAhEAlB1TS3vbi9g4bosjhdXMGFQV351czJ9Y9u5XZq0QAoCkQBirWXt18d4ZlUGOSdKSOndiZfvHsEVvdUJJI1HQSASIHbkn2buynS255+mT2wkr95zBTcN7KpOIGl0CgIRl+WcOMe8VZms2nuU2Pbh/Pb2wUxNiSNUnUDSRBQEIi45XlzOonX7ePvzg0SEhjB7fD8evDaRtmH6sZSmpSNOpImdq6hmycf7WbJpP5XVtdw9qhcP35hETLtwt0uTIKUgEGkiVTW1vP35QRaty6LwXCWTBnfnsQn9SYyJdLs0CXIKApFGZq1l1VdHmbc6k/2FJYxMjGbJvckM79XJ7dJEAAWBSKP6LPcUc9PS+eLAGfp1bcfS6SmMTe6iTiAJKAoCkUaQfbyY1LRM1qUfo2uHcJ6dMoQpV8TRSreHlACkIBDxo2Nny1m4Lot3Pj9IZFgov5zQnweuTqRNWCu3SxO5KAWBiB8Ul1fx6sb9vLZ5PzW1lumjE3h4bBLRkWFulyZSJwWBSANUVtfy5rZ8nl+fzamSSm4b2oPHbupPr85t3S5NxGcKApFLYK3lgy+PMH9NJvknSxndtzNPTBzA4Lgot0sTqTcFgUg9bck5SWpaOrsLikju1p4/3n8l1/eLVSeQNFt1BoExJh54A+gKWGCxtXaRMSYaeAdIAPKAqdba08bz07AIuAUoBe6z1u5snPJFmk7G0bM8k5bBhswT9IiKYP5PhnL78J7qBJJmz5czgmrgF9bancaY9sAOY8xa4D7gQ2ttqjFmDjAHeByYCCQ5H6OAl53PIs3SkaIyFqzJ4r2dBbQLD+WJiclMH51ARGt1AknLUGcQWGuPAEec6WJjTDrQE5gM3OAstgz4CE8QTAbesNZaYKsxpqMxpruzHZFmo6isipc/yuEPn+RiLTx4TSKzxlxGx7bqBJKWpV7XCIwxCcBwYBvQ1euX+1E8Lx2BJyQOeq1W4Ix9JwiMMTOBmQC9evWqb90ijaaiuoblW/J5cUM2RWVV/HhYT2aP70d8tDqBpGXyOQiMMe2A94FHrbVnvS+MWWutMcbW54mttYuBxQApKSn1WlekMdTWWlbsPsz8NZkUnC7j2qQY5kxMZlAPdQJJy+ZTEBhjWuMJgT9Za//LGT72zUs+xpjuwHFn/BAQ77V6nDMmErA27ytkblo6ew+fZWD3DiyfMZhrk2LdLkukSfjSNWSApUC6tXaB16wVwHQg1fn8V6/xnxlj3sZzkbhI1wckUO09XERqWgab9hXSs2MbFt4xjNuG9iBEnUASRHw5I7gauAfYY4zZ5Yw9iScA3jXGzADyganOvJV4Wkez8bSP3u/PgkX8oeB0KQvWZPHnXYfoENGa30wawD1X9SY8VJ1AEnx86RraDFzsz6MbL7C8BWY1sC6RRnGmtJKXNmSzbEs+Bnjour789Ia+RLVp7XZpIq7RfxZLUCivqmHZp3m8tCGb4opqpoyIY/b4fvTo2Mbt0kRcpyCQFq2m1vKXLw7xuzWZHC4qZ0z/WB6fmExytw5ulyYSMBQE0iJZa9mYdYLUtAwyjhYzJC6K+VOHMrpvjNuliQQcBYG0OHsKikhdlc4n2SfpFd2WF+4czqTB3dUJJHIRCgJpMQ6eKmXe6kxW7D5MdGQYT906kLtG9SYsNMTt0kQCmoJAmr1TJZW8uD6b5VvzaBVimDWmLw9d35cOEeoEEvGFgkCarbLKGl7/JJdXPsqhpLKaqSnxPDquH92iItwuTaRZURBIs1NTa3l/RwEL1mZx9Gw54wZ04fGbk0nq2t7t0kSaJQWBNBvWWjZkHic1LYOsY+cYFt+R5+8czsjEaLdLE2nWFATSLOw6eIa5K9PZlnuKxJhIfn/XCCZe3k23hxTxAwWBBLS8whLmrc7kb3uOENMujKcnD2LayF60bqVOIBF/URBIQCo8V8ELH+7jT9sOEBYawiM3JjHzuj60C9chK+Jv+qmSgFJaWc3STbm8sjGH8upapl0Zz8/HJdGlvTqBRBqLgkACQnVNLe9uL2DhuiyOF1cwYVBXfnVzMn1j27ldmkiLpyAQV1lrWfv1MZ5ZlUHOiRJSenfi5btHcEVvdQKJNBUFgbhmR/5p5q5MZ3v+afrERvLqPVdw08Cu6gQSaWIKAmlyOSfOMW9VJqv2HiW2fTi/vX0wU1PiCFUnkIgrFATSZI4Xl7No3T7e/vwgEaEhzB7fjxnXJBKpTiARV+knUBrduYpqlny8nyWb9lNZXctdo3rxyI1JxLQLd7s0EUFBII2oqqaWtz87wKIP91F4rpJJg7vz2IT+JMZEul2aiHhREIjfWWtZ9dVRnl2dSW5hCSMTo1lybzLDe3VyuzQRuQAFgfjVZ7mnmJuWzhcHzpDUpR1Lp6cwNrmLOoFEApiCQPwi+3gxqWmZrEs/RtcO4TwzZTBTRqgTSKQ5UBBIgxw7W85za7N4d/tBIsNC+eWE/jxwdSJtwlq5XZqI+EhBIJekuLyKVzfu57XN+6mptUwfncDDY5OIjgxzuzQRqScFgdRLZXUtb27L5/n12ZwqqeS2oT147Kb+9Orc1u3SROQSKQjEJ9ZaPvjyCPPXZJJ/spTRfTszZ2IyQ+I6ul2aiDSQgkDqtCXnJKlp6ewuKCK5W3v+eP+VXN8vVp1AIi2EgkAuKuPoWZ5Jy2BD5gl6REUw/ydDuX14T1qFKABEWhIFgXzPkaIyFqzJ4r2dBbQLD+WJiclMH51ARGt1Aom0RAoC+VZRWRUvf5TDHz7JxVp48JpEZo25jI5t1Qkk0pIFRBAcPlNGUWkVUW1bu11KUKqormH5lnxe3JBNUVkVPx7Wk9nj+xEfrU4gkWAQEEFwsqSSc5XVCoImVltrWbH7MPPXZFJwuoxrk2KYMzGZQT2i3C5NRJpQQAQBeNoTpels3lfI3LR09h4+y8DuHVg+YzDXJsW6XZaIuCCAgsDtCoLD3sNFpKZlsGlfIT07tmHhHcO4bWgPQtQJJBK0AiYIpHEVnC5lwZos/rzrEB0iWvObSQO456rehIeqE0gk2AVMEOiMoHGcKa3kpQ3ZLNuSjwEeuq4vP72hL1FtdD1GRDzqDAJjzOvA3wHHrbWXO2P/CvwjcMJZ7Elr7Upn3hPADKAGeMRau7oR6pY6lFfVsOzTPF7akE1xRTVTRsQxe3w/enRs43ZpIhJgfDkj+CPwIvDGeePPWWvnew8YYwYC04BBQA9gnTGmn7W2pq4nseiUwB9qai1/+eIQC9ZmcehMGWP6x/L4xGSSu3VwuzQRCVB1BoG19mNjTIKP25sMvG2trQByjTHZwEhgS93P4+MzyAVZa9mYdYLUtAwyjhYzJC6KeT8Zwui+MW6XJiIBriHXCH5mjLkX2A78wlp7GugJbPVapsAZ+x5jzExgJkBYt8t0PtAAXx0qYm5aOp9kn6RXdFteuHM4kwZ3VyeQiPjkUoPgZeBpwDqffwc8UJ8NWGsXA4sBwrsnWf0fQf0dPFXKvNWZrNh9mOjIMJ66dSB3jepNWKhuDykivrukILDWHvtm2hizBPjAeXgIiPdaNM4Zq3ubl1JIkDpdUskL67NZvjWPViGGWWP68tD1fekQoU4gEam/SwoCY0x3a+0R5+HtwFfO9ArgTWPMAjwXi5OAz3zZpk4I6lZWWcPrn+Tyykc5lFRWMzUlnkfH9aNbVITbpYlIM+ZL++hbwA1AjDGmAHgKuMEYMwzPH/J5wEMA1tq9xph3ga+BamCWLx1DHkqCi6mptby/o4AFa7M4eraccQO68PjNySR1be92aSLSAphAeG0+vHuS/WrXTv1iO4+1lg2Zx0lNyyDr2DmGxXfkyVsGMDIx2u3SRCQAGGN2WGtTGrqdwPnPYrcLCDC7Dp5h7sp0tuWeIjEmkt/fNYKJl3fT7SFFxO8CJwiUBADkFZYwb00mf/vyCDHtwnh68iCmjexF61bqBBKRxhEwQRDsCs9V8MKH+/jTtgOEhYbwyI1JzLyuD+3C9S0SkcYVML9lgvUtJkorq1m6KZdXP95PWVUN066M5+fjkujSXp1AItI0AicIgiwHqmtqeXd7AQvXZXG8uIIJg7ryq5uT6Rvbzu3SRCTIKAiamLWWtV8f45lVGeScKCGldydevnsEV/RWJ5CIuCNwgiAIXhrakX+a1LR0Ps87TZ/YSF695wpuGthVnUAi4qrACYIWnAP7T5zj2VWZrNp7lNj24fz77ZdzR0o8oeoEEpEAEDBB0BKdKK5g0YdZvPXZQSJCQ5g9vh8PXptI2zDtdhEJHAHzG6klnRGUVFSz+OP9LNm0n8rqWu4a1YtHbkwipl2426WJiHxP4ARBC7hGUFVTy9ufH2TRun0Unqtg0uDuPDahP4kxkW6XJiJyUYETBM04B6y1rN57lGdXZbK/sISRidEsufcKhvfq5HZpIiJ1CpggaK4+zzvF3JXp7DxwhqQu7Vg6PYWxyV3UCSQizUbABEFzOyHIPl5Malom69KP0bVDOM9MGcyUEXHqBBKRZidwgqCZvDZ07Gw5C9dl8c7nB4kMC+WXE/rzwNWJtAlr5XZpIiKXJHCCwO0C6lBcXsWrG/fz2ub91NRapo9O4OGxSURHhrldmohIgwROEARoElRW1/LmtnyeX5/NqZJKbhvag8du6k+vzm3dLk1ExC8CJggC7ZzAWsvf9hxh3upM8k+WMrpvZ+ZMTGZIXEe3SxMR8auACYJAOiPYknOS1LR0dhcUkdytPX+8/0qu7xerTiARaZECJwjcLgDIPFpMalo6GzJP0CMqgvk/Gcrtw3vSKkQBICItV+AEgYtJcKSojAVrsnh/ZwGR4aE8MTGZ6aMTiGitTiARafkCKAiaPgmKyqp4ZWMOr2/OxVqYcU0is8ZcRse26gQSkeAROEHQhM9VUV3Df2w9wAvr91FUVsWPh/Vk9vh+xEerE0hEgk/ABEFTqK21/PeXh5m3OpOC02VcmxTDnInJDOoR5XZpIiKuCZggaOxXhj7JLmRuWjpfHTrLwO4dWD5jMNcmxTbuk4qINAOBEwSN9OLQ14fPkroqg4+zTtCzYxsW3jGM24b2IESdQCIiQAAFgb9z4NCZMn63JpM/f3GIDhGt+c2kAdz9o97qBBIROU/ABIG/cqCotIqXPsrmj5/mATDzuj788/WXEdW2tZ+eQUSkZQmcIGhgEpRX1fDGljxe2pDD2fIq/n54HLNv6kfPjm38U6CISAsVOEFwiecEtbWWv+4+xPzVWRw6U8b1/WKZMzGZAd07+LlCEZGWKXCC4BJyYPM+TyfQ3sNnubxnB579hyFcfVmM/4sTEWnBAicI6rFs+pGzpKZlsNHpBFo0bRi3DlEnkIjIpQiYIKipra1zmW/eE+i9nQW0Dw/l17cM4J6r1AkkItIQARMEr23KZWxy1wvOO1texasbc1i6OZfaWnhQ7wkkIuI3ARMEcZ2+391z/t3BJg/z3B1M7wkkIuI/AREErUIMbbxe3rHWsubrY8xdmU7eyVKu6tOZJ28ZwOA4vSeQiIi/1RkExpjXgb8DjltrL3fGooF3gAQgD5hqrT1tPLfwWgTcApQC91lrd9b1HCHGUFxR/e3tIeevziTvZClJXdrxh/uu5Ib+ujuYiEhjMXXdB8AYcx1wDnjDKwieBU5Za1ONMXOATtbax40xtwAP4wmCUcAia+2ouoroEN/fRt+14NvH4aEhPHnLAO4a1YvQViGX+rWJiLRoxpgd1tqUhm6nzjMCa+3HxpiE84YnAzc408uAj4DHnfE3rCddthpjOhpjultrj/zQc1RU/2/H0JUJnVg+Y5Q6gUREmsil/rnd1euX+1Hgm3afnsBBr+UKnLHvMcbMNMZsN8Zs/2Zs+lW9+c9/Gq0QEBFpQg1+3cX567/e/xdsrV1srU3xPq257+rEhpYjIiL1dKlBcMwY0x3A+XzcGT8ExHstF+eM/aCEzm156taBJMZEXmI5IiJyqS41CFYA053p6cBfvcbvNR4/Aorquj4A0D6iNffrbEBExBW+tI++hefCcIwxpgB4CkgF3jXGzADyganO4ivxdAxl42kfvb8RahYRET/ypWvozovMuvECy1pgVkOLEhGRpqMmfRGRIKcgEBEJcgoCEZEgpyAQEQlyCgIRkSCnIBARCXJ1vvtokxRhTDGQ6XYdPogBCt0uwgeq07+aQ53NoUZQnf7W31rbvqEbCYgb0wCZ/ngr1cZmjNmuOv1HdfpPc6gRVKe/eb9pZ0PopSERkSCnIBARCXKBEgSL3S7AR6rTv1Sn/zSHGkF1+ptf6gyIi8UiIuKeQDkjEBERlygIRESCXKMHgTHmZmNMpjEm2xgz5wLzw40x7zjztxljErzmPeGMZxpjJrhc52xjzNfGmC+NMR8aY3p7zasxxuxyPla4WON9xpgTXrU86DVvujFmn/Mx/fx1m7jO57xqzDLGnPGa1yT70nmu140xx40xX11kvjHGPO98HV8aY0Z4zWuS/elDjXc5te0xxnxqjBnqNS/PGd/lrzbDBtR5gzGmyOt7+y9e837weGniOn/pVeNXzvEY7cxryv0Zb4zZ4PzO2WuM+fkFlvHf8WmtbbQPoBWQA/QBwoDdwMDzlvln4BVnehrwjjM90Fk+HEh0ttPKxTrHAG2d6Z9+U6fz+Fxj7sd61Hgf8OIF1o0G9jufOznTndyq87zlHwZeb8p96fVc1wEjgK8uMv8WIA0wwI+AbS7sz7pqHP3NcwMTv6nReZwHxATIvrwB+KChx0tj13nesrcC613an92BEc50eyDrAj/vfjs+G/uMYCSQba3db62tBN4GJp+3zGRgmTP9HnCjMcY4429bayustbl47no20q06rbUbrLWlzsOteO7H3JR82ZcXMwFYa609Za09DawFbg6QOu8E3mqkWn6QtfZj4NQPLDIZeMN6bAU6Gs89uptsf9ZVo7X2U6cGcOe4/KaOuvblxTTkuK63etbp5rF5xFq705kuBtKBnuct5rfjs7GDoCdw0OtxAd//Yr5dxlpbDRQBnX1ctynr9DYDTxJ/I8IYs90Ys9UY8+NGqA98r3GKc5r4njEmvp7r+oPPz+W8vJYIrPcabop96auLfS1NuT/r4/zj0gJrjDE7jDEzXarJ21XGmN3GmDRjzCBnLCD3pTGmLZ5fnu97DbuyP43n5fLhwLbzZvnt+AyUt5hoNowxdwMpwPVew72ttYeMMX2A9caYPdbaHBfK+2/gLWtthTHmITxnWmNdqMNX04D3rLU1XmOBsi+bFWPMGDxBcI3X8DXOvuwCrDXGZDh/EbthJ57v7TljzC3AX4Akl2rxxa3AJ9Za77OHJt+fxph2eMLoUWvt2cZ6nsY+IzgExHs9jnPGLriMMSYUiAJO+rhuU9aJMWYc8GvgNmttxTfj1tpDzuf9wEd40rvJa7TWnvSq6zXgCl/Xbco6vUzjvFPvJtqXvrrY19KU+7NOxpgheL7fk621J78Z99qXx4E/03gvrdbJWnvWWnvOmV4JtDbGxBBg+9LLDx2bTbI/jTGt8YTAn6y1/3WBRfx3fDbyBY9QPBcqEvnfC0GDzltmFt+9WPyuMz2I714s3k/jXSz2pc7heC5qJZ033gkId6ZjgH00wsUuH2vs7jV9O7DV/u/Fo1yn1k7OdLRb+9JZLhnPxTfT1PvyvDoSuPgFzkl892LcZ029P32osRee62ejzxuPBNp7TX8K3Ozivuz2zfcazy/QA85+9el4aao6nflReK4jRLq1P5198waw8AeW8dvx2Wg726vYW/Bc8c4Bfu2M/Ruev6oBIoD/dA7mz4A+Xuv+2lkvE5jocp3rgGPALudjhTM+GtjjHMB7gBku1jgX2OvUsgFI9lr3AWcfZwP3u7kvncf/CqSet16T7Uvn+d4CjgBVeF5HnQH8E/BPznwDvOR8HXuAlKbenz7U+Bpw2uu43O6M93H2427nmPi1y/vyZ17H5la8gutCx4tbdTrL3IenUcV7vaben9fguSbxpdf39pbGOj71FhMiIkFO/1ksIhLkFAQiIkFOQSAiEuQUBCIiQU5BICIS5BQEIiJBTkEgIhLk/gdKVyLo0mQMigAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "z = signal.hilbert(y)\n",
    "instfrq = fs/(2*np.pi)*np.diff(np.unwrap(np.angle(z)))\n",
    "plt.plot(t[1:],instfrq)\n",
    "plt.xlim([0,2])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "生成频率为 60 Hz 和 90 Hz 的两个正弦波的总和，以 1023 Hz 采样两秒。计算并绘制频谱图。在每个时间点都显示存在两个分量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 300.0)"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWYAAAD8CAYAAABErA6HAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAYE0lEQVR4nO3df5BdZX3H8fdnNz9AwPAjCDGkQjW1g1YBI2LtKALWiDMER7SBKYKDk7aSKVY702g7aGmZQVthxpaiqzBGR4kUtKQaRYpY60zBBEQgSSkrQkkmggHlh5Bsdu+3f9wTuKzn3Hvu3nvufbLn85o5s+c859dzn9x899nnPOd5FBGYmVk6RoadATMzeyEHZjOzxDgwm5klxoHZzCwxDsxmZolxYDYzS0zHwCxpP0k/kvQTSZsl/W2Wfoyk2yWNS/qapHlZ+vxsezzbf3TFn8HMbFYpU2PeDZwSEa8FjgOWSzoJ+CRwRUS8AvglcEF2/AXAL7P0K7LjzMyspI6BOZqezjbnZksApwDXZ+lrgTOz9RXZNtn+UyWpXxk2M5vt5pQ5SNIocAfwCuBK4KfAryJiMjtkG7A4W18MPAwQEZOSngAOA3ZOu+YqYBXAKHNed4BenHtvv5loVlMF9bmn4vGdEXF4L5d++1sPiMcenyp17B13774pIpb3cr9ulQrMETEFHCfpYOAbwO/2euOIGAPGABaMHBYnzcv/3I2JiV5vZWb7IM2Zm5t+855rH+r12jsfn+L2m44qdezcRT9d2Ov9ulUqMO8VEb+SdCvwRuBgSXOyWvNRwPbssO3AEmCbpDnAAuCxPubZzKxHwVQ0hp2JQmV6ZRye1ZSRtD/wNmArcCtwVnbYecCN2fr6bJts//fC7RFmlpAAGkSpZRjK1JgXAWuzduYR4LqI+KakLcA6SX8P/Bi4Ojv+auDLksaBx4GVFeTbzKwnDdKtMXcMzBFxN3B8TvoDwIk56buA9/Qld2ZmFQiCPQk3ZXTVxmxmNigaqa6XbQBTQ2qmKMOB2cxqaVjtx2U4MJtZ7QQwlXCfBAdmM6uldFuYHZjNrIaCcBuzmVlKImBPunHZgdnM6khMke7Yag7MZlY7ATRcYzYzS4trzGZmCWm+YOLAbGaWjAD2RLpTnjowm1ntBGIq4bmoHZjNrJYa4aYMM7NkuI3ZzCw5YsptzGZm6WjOYOLAbGaWjAgxEaPDzkYhB2Yzq6WG25jNzNLRfPjnpgwzs4T44Z+ZWVL88M/MLEFTfsHEzCwdgdgT6Ya/dHKmdP+sMLMhqDAm+OGfmVliArkpw8wsNX74Z2aWkAiS7i7XMWeSlki6VdIWSZslXZSlf0LSdkl3ZcvpLed8VNK4pPskvb3KD2Bm1q3mw7/RUsswlKkxTwIfiYg7JR0E3CHp5mzfFRHxj60HSzoWWAm8Cngp8B+SficipvqZcTOzXuzTD/8iYgewI1t/StJWYHGbU1YA6yJiN/AzSePAicB/9yG/ZmY9C5T0QPld/cqQdDRwPHB7lrRa0t2SrpF0SJa2GHi45bRttA/kZmYDN8VIqWUYSt9V0oHADcCHIuJJ4Crg5cBxNGvUn+7mxpJWSdokadNE7O7mVDOzngTQiJFSyzCU6pUhaS7NoPyViPg6QEQ80rL/88A3s83twJKW04/K0l4gIsaAMYAFI4fFTDJvZjYzSnpqqTK9MgRcDWyNiMtb0he1HPYu4N5sfT2wUtJ8SccAS4Ef9S/LZma9CUi6V0aZevqbgHOBU6Z1jfuUpHsk3Q28FfgLgIjYDFwHbAG+A1zoHhlmlpII9a0pQ9LyrGvwuKQ1bY57t6SQtKzTNcv0yvgh5Nb5N7Q551Lg0k7XNjMbln68YCJpFLgSeBvNjg4bJa2PiC3TjjsIuIjnO060lW5HPjOzijTHY1appYMTgfGIeCAiJoB1NLsMT/d3wCeBXWXy58BsZjXUnMGkzNJBx+7Bkk4AlkTEt8rmLo2xMgSMpPuE1Mxml2Z3udIxZ6GkTS3bY1mvso4kjQCXA+d3k780ArOZ2QDtHSujpJ0RUfTArlP34IOAVwPfb3Zw40hgvaQzIqI12L+AA7OZ1VKfhv3cCCzNugZvpzlO0Dl7d0bEE8DCvduSvg/8ZbugDA7MZlZDzWE/e28+jYhJSauBm4BR4JqI2CzpEmBTRKyfyXUdmM2slvo1iFFEbGBa9+GIuLjg2JPLXNOB2cxqpzm6XLqd0hyYzax2mq9kOzCbmXWn0i60rjGbmSWnxFt9Q+PAbGa1069eGVVxYDazWnJThplZQlKf88+B2cxqJ4BJ15jNzNLipoyOBEr3zwozG4IqY0K4KcPMLCl7B8pPlQOzmdWSa8xmZgnpcqD8gXNgNrPaCcRkww//zMyS4jZmM7OUhJsyzMyS4jZmM7MEOTCbmSUkEFN++GdmlhY//DMzS0gk/vCvY11e0hJJt0raImmzpIuy9EMl3Szp/uznIVm6JH1G0rikuyWdUPWHMDPrVoRKLcNQppFlEvhIRBwLnARcKOlYYA1wS0QsBW7JtgHeASzNllXAVX3PtZlZT5qDGJVZhqFjYI6IHRFxZ7b+FLAVWAysANZmh60FzszWVwBfiqbbgIMlLep3xs3MepFyjbmrNmZJRwPHA7cDR0TEjmzXz4EjsvXFwMMtp23L0na0pCFpFc0aNfvpADSS7hNSMxu8KmNCBEw10m1jLh2YJR0I3AB8KCKeVMtYqRERkqKbG0fEGDAGsGB0YVfnmpn1KuVeGaV+JUmaSzMofyUivp4lP7K3iSL7+WiWvh1Y0nL6UVmamVkSgrSbMsr0yhBwNbA1Ii5v2bUeOC9bPw+4sSX9fVnvjJOAJ1qaPMzMEpD2w78yTRlvAs4F7pF0V5b2MeAy4DpJFwAPAe/N9m0ATgfGgWeA9/czw2Zm/RAJN6B2DMwR8UMobIw5Nef4AC7sMV9mZpUaVjNFGX7zz8xqp9krI92eYA7MZlZL+3RTxkBIMDo67FyYWUpUbVODmzLMzBISDK8rXBkOzGZWSwm3ZJR7wcTMbFYJiIZKLZ1IWi7pvmxEzTU5+/9U0j2S7pL0w2wQuLYcmM2slvrx5p+kUeBKmqNqHgucnRN4vxoRvxcRxwGfAi6nAwdmM6uliHJLBycC4xHxQERMAOtojrDZcp94smXzAEq0oriN2cxqZ+9YGSUtlLSpZXssG4QN8kfTfMP0C0i6EPgwMA84pdMN0wnMFXeNMbN9TJVdaAMoH5h3RsSynm4XcSVwpaRzgL/h+XGGcrkpw8xqqU9NGd2OprmO5ycVKeTAbGY1VK5HRoleGRuBpZKOkTQPWElzhM3n7yQtbdl8J3B/p4um05RhZjZIfejIHBGTklYDNwGjwDURsVnSJcCmiFgPrJZ0GrAH+CUdmjHAgdnM6ij690p2RGygOdxxa9rFLesXdXtNB2Yzq6eEX/1zYDazmkq3J1gagVkgjy5nZi0qjwmNai/fizQCs5nZIHXXj3ngHJjNrJY8UL6ZWWocmM3MEuOmDDOztMg1ZjOzhISgxCD4w+LAbGb15BpzJ4JRj6dkZi2qjgkOzGZmiXFgNjNLSOIvmHT8W0HSNZIelXRvS9onJG3PZn29S9LpLfs+ms0We5+kt1eVcTOzXijKLcNQphHni8DynPQrIuK4bNkAkM0OuxJ4VXbOv2SzyJqZpSVKLkPQMTBHxA+Ax0tebwWwLiJ2R8TPgHGas8iamSVlX68xF1kt6e6sqeOQLC1vxtjFeSdLWiVpk6RNE41ne8iGmdkMhMotQzDTwHwV8HLgOGAH8OluLxARYxGxLCKWzRt9Ecydm7+YWT3NmZO/9EPZZox9qcYcEY9ExFRENIDP83xzRbczxpqZDcdsC8ySFrVsvgvY22NjPbBS0nxJxwBLgR/1lkUzs/5To9wyDB3/LpB0LXAysFDSNuDjwMmSjqP5++RB4E8AstlhrwO2AJPAhRExVUnOzcx6sS+/YBIRZ+ckX93m+EuBS3vJlJlZlYbZ46IMv/lnZvWU8Jt/DsxmVk+uMZuZpcVNGZ2MCObPG3YuzCwl+82v7toxvB4XZaQRmM3MBs01ZjOzxDgwm5mlJeU2Zs/nZGaWGNeYzayeEq4xOzCbWf24V0YJErF/QXc5ubXFrI6i6i60rjGbmaVD+OGfmVl6+jQes6Tl2eTT45LW5Oz/sKQt2YxPt0h6WadrOjCbWf2UnO+vU606m2z6SuAdwLHA2dmk1K1+DCyLiNcA1wOf6pQ9B2Yzq6dGyaW9E4HxiHggIiaAdTQnpX5ORNwaEc9km7fRnNmpLQdmM6ulPs2SXXoC6swFwLc7XdQP/8ysnso//FsoaVPL9lhEjHV7O0l/DCwD3tLpWAdmM6uf7iZa3RkRywr2lZqAWtJpwF8Db4mI3Z1umERgbswbZfdLX5y7b964hwM1m7VGimcR2X1UfkxgS39u3afuchuBpdnk09uBlcA5L7iPdDzwOWB5RDxa5qJuYzazeupDd7mImARWAzcBW4HrskmpL5F0RnbYPwAHAv8q6S5J6ztlLYkas5nZoPXrleyI2ABsmJZ2ccv6ad1e04HZzOqnuzbmgXNgNrPaUbakyoHZzOrJNWYzs7SkPIhREoF58kXikdfnd4ub+8oTBpyb+in6gkbKf+vNIi7/fFEUnb7brxv06ToVSCIwm5kNVOID5XfsxyzpGkmPSrq3Je1QSTdLuj/7eUiWLkmfyYa/u1uSq7tmlqY+DftZhTIvmHwRWD4tbQ1wS0QsBW7JtqE59N3SbFkFXNWfbJqZ9VefBjGqRMfAHBE/AB6flrwCWJutrwXObEn/UjTdBhwsaVGf8mpm1j/7eI05zxERsSNb/zlwRLZeegg8SaskbZK0afKZX88wG2ZmM7NP15g7iYgZ/V6JiLGIWBYRy+a86IBes2FmVl7Qr4HyKzHTXhmPSFoUETuypoq9IyaVGgJvusZcePbI/BL4rw9ekZs+t+B3yp42JVl0TqPg98pIm3eDis5pp+h6M7l/0eecSbnsp9Hc9F0xVXhOt/cpOh66//z9LPuZ3H8m37F+ln+7suy2/NuV5SDKv125/P4XPtL1fcqarZOxrgfOy9bPA25sSX9f1jvjJOCJliYPM7N0JNzG3LHGLOla4GSao/hvAz4OXAZcJ+kC4CHgvdnhG4DTgXHgGeD9FeTZzKxninSrzB0Dc0ScXbDr1JxjA7iw10yZmVXKo8uZmaUn5TZmB2Yzq6WUX8l2YDazenKN2cwsIUN8eaSMJALz6C5YcF9+z7133nNubvqvd+cPE7r/vD2F99m1J//jzp8zmZs+MZXfvxRgdKT7f9WpRn5fznmj+f1Vd08W//PsNzc/z0XlctB+xTOmP7VrftfndFv+RWUP3Zd/P8seist/1565uentvmODKP+ie7TLW7fffYA9jfzyH2kT0VSwb3Iq//93UdkDHLitcFd/ODCbmaUj9RdMHJjNrJbUSDcyOzCbWf24H7OZWXrcXc7MLDWuMZuZpcUP/zoYnQgWPJjfbedX33pJbvrE4fnX0vS5VlrsPiQ/PZ7MT5/cv/haI0W9jNr8YzcKejk1CuYJmFhQfK2iz7lnYX76s4/mpwPsyS9inv1F8TkTBfcpytfEwcXXiqfy04vKv7DsobD8i8oeui//kTbfsUGUf1HZQ/fl33i6+FpT+xXco7iHW2HzwFR+j8C293/x421u1KsA9uVBjMzMZiO3MZuZJcT9mM3MUhPhpgwzs9S4xmxmlhoHZjOztLjGbGaWkgCm0o3MSQTmiReLh0/LH2Jw/I+uyk1/NvKHRNxfBR0m25wzX/nDO+4pmD4eiqdjb6do2ve5BdPX747i4SWLPudMyuXpxq7c9ANHCjqyzuA+RcdD9+Xfz7KH7st/Jt+xfpZ/u7Isuk/RZyn67DCY8m93/1d/rmD60Bu6vn2ulGvM+YOkmpnNdnt7ZnRaOpC0XNJ9ksYlrcnZ/2ZJd0qalHRWmaw5MJtZLSnKLW2vIY0CVwLvAI4FzpZ07LTD/g84H/hq2bwl0ZRhZjZQ/Rv280RgPCIeAJC0DlgBbHnuVhEPZvtKv2vowGxmtSNA5R/+LZS0qWV7LCLGsvXFwMMt+7YBb+g1fw7MZlZLKv/m386IWFZlXqZzYDaz+ulfU8Z2YEnL9lFZWk/SCMwKGvvnd81Z+p/n5aaPFMyU3GgzG3LRDL4R+ecUHd9vM7l/0TkzKZdBnDOTz5Jq+RcdD4Mpy6Lj250zk88yiPJve/82w+724c79GitjI7BU0jE0A/JK4JxeL9pTrwxJD0q6R9Jde9tgJB0q6WZJ92c/C0ZBNjMbnn70yoiISWA1cBOwFbguIjZLukTSGQCSXi9pG/Ae4HOSNnfKWz9qzG+NiJ0t22uAWyLisqxP3xrgr/pwHzOz/unT6HIRsQHYMC3t4pb1jTSbOEqroh/zCmBttr4WOLOCe5iZzVw0e2WUWYah18AcwHcl3SFpVZZ2RETsyNZ/DhzR4z3MzPovSi5D0GtTxh9ExHZJLwFulvQ/rTsjIlTwBCEL5KsARg89uMdsmJl1p4vucgPXU405IrZnPx8FvkHzLZhHJC0CyH7mTkMZEWMRsSwilo0eeEAv2TAz616fxsqowoxrzJIOAEYi4qls/Q+BS4D1wHnAZdnPGztda3SXWLA5PytHXn1v/klFBaY2I1/N5JxhavelKMrzoMplXyvLmUi1LGfyvdgHPXL+cdVdPIBZOhnrEcA31PwizAG+GhHfkbQRuE7SBcBDwHt7z6aZWf+ISLopY8aBORu047U56Y8Bp/aSKTOzyjXSrTKn8eafmdkgzeKmDDOzfdasbMowM9unOTCbmaVkeF3hynBgNrP68SzZnY3uDg5+YDJ3X+PZ/BmEzWx2W/BQfkzoF7cxm5mlxoHZzCwhATQcmM3MEuKHf2Zm6XFgNjNLSABT6b7658BsZjUUEA7MbakBo7vyZ8lOufDMrDqjzxTEhH5xU4aZWULcK8PMLEGuMZuZJcaB2cwsIREwVXEbdg8cmM2snlxjNjNLjAOzmVlKwr0yOopgZML9lc3seSOTFcaEgEj4HYk0ArOZ2aD5lWwzs4REQMOB2cwsLX74Z2aWlnCN2cwsJR4o38wsLR7EyMxsBiqs0QYQCb+SPVLVhSUtl3SfpHFJa6q6j5lZ1yIbKL/MMgSV1JgljQJXAm8DtgEbJa2PiC1V3M/MrFuRcFNGVTXmE4HxiHggIiaAdcCKiu5lZta9hGvMigracSSdBSyPiA9k2+cCb4iI1S3HrAJWZZuvBO7L1hcCO/ueqX2Py8FlAC4D+M0yeFlEHN7LBSV9J7tuGTsjYnkv9+vW0B7+RcQYMDY9XdKmiFg2hCwlxeXgMgCXAVRTBoMOtN2qqiljO7CkZfuoLM3MzDqoKjBvBJZKOkbSPGAlsL6ie5mZzSqVNGVExKSk1cBNwChwTURsLnn6bzRv1JTLwWUALgOoYRlU8vDPzMxmrrIXTMzMbGYcmM3MEjO0wNzplW1J8yV9Ldt/u6Sjh5DNSpUog/Ml/ULSXdnygWHks0qSrpH0qKR7C/ZL0meyMrpb0gmDzmPVSpTByZKeaPkeXDzoPFZN0hJJt0raImmzpItyjpn134XnRMTAF5oPBH8K/DYwD/gJcOy0Yz4IfDZbXwl8bRh5HXIZnA/887DzWnE5vBk4Abi3YP/pwLcBAScBtw87z0Mog5OBbw47nxWXwSLghGz9IOB/c/4/zPrvwt5lWDXmMq9srwDWZuvXA6dK0gDzWDW/tg5ExA+Ax9scsgL4UjTdBhwsadFgcjcYJcpg1ouIHRFxZ7b+FLAVWDztsFn/XdhrWIF5MfBwy/Y2fvMf4bljImISeAI4bCC5G4wyZQDw7uzPtuslLcnZP9uVLafZ7o2SfiLp25JeNezMVClrtjweuH3artp8F/zwL23/DhwdEa8Bbub5vyCsXu6kOT7Ea4F/Av5tuNmpjqQDgRuAD0XEk8POz7AMKzCXeWX7uWMkzQEWAI8NJHeD0bEMIuKxiNidbX4BeN2A8paS2r/eHxFPRsTT2foGYK6ksgPw7DMkzaUZlL8SEV/POaQ234VhBeYyr2yvB87L1s8CvhfZE4BZomMZTGs/O4Nmu1vdrAfelz2RPwl4IiJ2DDtTgyTpyL3PVySdSPP/7WyqpJB9vquBrRFxecFhtfkuDGV0uSh4ZVvSJcCmiFhP8x/py5LGaT4YWTmMvFalZBn8uaQzgEmaZXD+0DJcEUnX0ux1sFDSNuDjwFyAiPgssIHm0/hx4Bng/cPJaXVKlMFZwJ9JmgSeBVbOskoKwJuAc4F7JN2VpX0M+C2oz3dhL7+SbWaWGD/8MzNLjAOzmVliHJjNzBLjwGxmlhgHZjOzxDgwm5klxoHZzCwx/w+EZSTIeSnZ8AAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fs = 1023\n",
    "t = np.linspace(0,2-1/fs,fs*2)\n",
    "x = np.sin(2*np.pi*60*t)+np.sin(2*np.pi*90*t)\n",
    "\n",
    "f,t2,zxx = signal.stft(x,fs,nperseg = 100)\n",
    "plt.pcolormesh(t2, f, abs(zxx))\n",
    "plt.colorbar()\n",
    "plt.ylim([0,300])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算分析信号并对其相位求微分。放大包含正弦波频率的区域。分析信号预测瞬时频率，即正弦波频率的平均值。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60.0, 90.0)"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "z = signal.hilbert(x)\n",
    "instfrq = fs/(2*np.pi)*np.diff(np.unwrap(np.angle(z)))\n",
    "\n",
    "plt.plot(t[1:],instfrq)\n",
    "plt.ylim([60,90])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "要采用时间的函数来估算这两个频率，请使用 spectrogram 求功率频谱密度，使用 tfridge 跟踪两个脊。在 tfridge 中，将更改频率的罚分指定为 0.1。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.0, 300.0)"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "f,t2,zxx = signal.stft(x,fs,nperseg = 100)\n",
    "plt.pcolormesh(t2, f, abs(zxx))\n",
    "plt.colorbar()\n",
    "plt.plot([0.05,1.95],[92,92],'r',linewidth = 3)\n",
    "plt.plot([0.05,1.95],[60,60],'b',linewidth = 3)\n",
    "plt.xlim([0,2])\n",
    "plt.ylim([0,300])"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "c8b08d2241c8157cc559a694afc7fe14d3ec73f4c204ededcfdcbff38dcf9d20"
  },
  "kernelspec": {
   "display_name": "Python 3.10.3 64-bit",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.3"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
